using System;

namespace StackAr.DataStructures
{
	
	/// <summary> Protocol for Hashable objects.</summary>
	/// <author>  Mark Allen Weiss
	/// </author>
    /// <remarks>
    /// Taken from the Daikon distribution.
    /// 
    /// The original code was written in Java.
    /// We converted it to C# with the Visual Studio conversion assistant.
    /// The intent was to make our C# version as similar to Daikon's
    /// Java version as possible.
    /// 
    /// Please contact us for questions or concerns:
    /// csallner@uta.edu
    /// </remarks>
	public interface Hashable
	{
		/// <summary> Compute a hash function for this object.</summary>
		/// <param name="tableSize">the hash table size.
		/// </param>
		/// <returns> (deterministically) a number between
		/// 0 and tableSize-1, distributed equitably.
		/// </returns>
		int hash(int tableSize);
	}
}